/*
 * EventoBase.java	
 *
 * Copyright 2009 Universidad Francisco de Paula Santander (UFPS).
 * Todos los Derechos Reservados.
 * Creado el 05/10/09, 11:23:38 AM
 */

package com.ufps.cuatro.util.base;

/**
 * <i><b>EventoBase:</b></i> Representa la Definición de un Evento Swing asociado a su
 * respectivo Oyente.
 *
 * @author  Carlos A. Torres C. - Dolly E. Guerrero. <https://code.google.com/p/tesis4dor/>
 * @version 1.0 05/10/09
 * @see Serializable
 * @see Cloneable
 * @see Comparable
 */
public class EventoBase extends ObjectBase{
    private static final long serialVersionUID = -7964988159476809387L;
    
    /**
     * Nombre del Evento.
     */
    protected String strNombre;    
    /**
     * Nombre corto ó alias asociado al Evento.
     */
    protected String strAlias;
    /**
     * Mensaje informativo asociado al Evento.
     */
    protected String strTooltips;    
    
    private OyenteBase objOyenteBase;    
    
    /**
     * Constructor por defecto.
     */
    public EventoBase() {
    }
    
    /**
     * Constructor Utilizado en la Implementación.
     * @param id Indice de definición en el Archivo de Propiedades.
     * @param strNombre Nombre del Evento.
     * @param strAlias Nombre corto ó alias asociado al Evento.
     * @param strTooltips Mensaje informativo asociado al Evento.
     */
    public EventoBase(int id, String strNombre, String strAlias, String strTooltips) {
        this.id = id;
        this.strNombre = strNombre;
        this.strAlias = strAlias;
        this.strTooltips = strTooltips;        
    }

    /**
     * Constructor Utilizado en la Implementación.
     * @param id Indice de definición en el Archivo de Propiedades.
     * @param strNombre Nombre del Evento.
     * @param strAlias Nombre corto ó alias asociado al Evento.
     * @param strTooltips Mensaje informativo asociado al Evento.
     * @param objOyenteBase Oyente padre del Evento.
     */
    public EventoBase(int id, String strNombre, String strAlias, String strTooltips, OyenteBase objOyenteBase) {
        this.id = id;
        this.strNombre = strNombre;
        this.strAlias = strAlias;
        this.strTooltips = strTooltips;
        this.objOyenteBase = objOyenteBase;
    }    

    /**
     * Devuelve una Referencia del Oyente Padre.
     * @return Referencia del Oyente Padre.
     */
    public OyenteBase getObjOyenteBase() {
        return objOyenteBase;
    }

    /**
     * Establece una Referencia del Oyente Padre.
     * @param objOyenteBase Referencia del Oyente Padre.
     */
    public void setObjOyenteBase(OyenteBase objOyenteBase) {
        this.objOyenteBase = objOyenteBase;
    }

    /**
     * Devuelve el Nombre corto ó alias asociado al Evento.
     * @return Nombre corto ó alias asociado al Evento.
     */
    public String getStrAlias() {
        return strAlias;
    }

    /**
     * Establece el Nombre corto ó alias asociado al Evento.
     * @param strAlias Nombre corto ó alias asociado al Evento.
     */
    public void setStrAlias(String strAlias) {
        this.strAlias = strAlias;
    }

    /**
     * Devuelve el Nombre del Evento.
     * @return Nombre del Evento.
     */
    public String getStrNombre() {
        return strNombre;
    }

    /**
     * Establece el Nombre del Evento.
     * @param strNombre Nombre del Evento.
     */
    public void setStrNombre(String strNombre) {
        this.strNombre = strNombre;
    }

    /**
     * Devuelve el Mensaje informativo asociado al Evento.
     * @return Mensaje informativo asociado al Evento.
     */
    public String getStrTooltips() {
        return strTooltips;
    }

    /**
     * Establece el Mensaje informativo asociado al Evento.
     * @param strTooltips Mensaje informativo asociado al Evento.
     */
    public void setStrTooltips(String strTooltips) {
        this.strTooltips = strTooltips;
    }    

    @Override
    public String toString() {
        try{
            return strAlias.isEmpty() ? strNombre : strAlias;
        }catch(java.lang.NullPointerException ex){}
        return "";   
    }

    @Override
    public int compareTo(Object o) {
      try{
        EventoBase obj = (EventoBase) o;
        if(this.id > obj.id)
            return 1;
        else if(this.id < obj.id)
            return -1;
        else
            return 0;
    }catch(java.lang.NullPointerException ex){}
      return 0;
    }
}
